#ifndef BANK_CHECKINGACCOUNT_HH
#define BANK_CHECKINGACCOUNT_HH

#include "Account.hh"

class CheckingAccount : public Account {
public:
    CheckingAccount(std::string id, std::string owner, double initialBalance = 0.0);

    void displayDetails() const override;
    bool canDeposit() const override;
    bool canWithdraw() const override;
    // Checking account can transfer to any account.
    bool canTransferTo(const Account& destinationAccount) const override;
    
    // 添加getAccountTypeName方法的声明
    std::string getAccountTypeName() const override;

    // Implement deposit, withdraw, transfer logic
    bool deposit(double amount, const std::string& note) override;
    bool withdraw(double amount, const std::string& note) override;
    // bool transfer(Account& destinationAccount, double amount, const std::string& note) override; // May use base implementation

};

#endif // BANK_CHECKINGACCOUNT_HH 